package com.zjsru.plan2023.oneday;

/**
 * @Author: cookLee
 * @Date: 2023-09-20
 *  拿硬币
 */
public class MinCount {

    /**
     * 输入：[4,2,1]
     * 输出：4
     * 解释：第一堆力扣币最少需要拿 2 次，第二堆最少需要拿 1 次，第三堆最少需要拿 1 次，总共 4 次即可拿完。
     * \
     * 输入：[2,3,10]
     *
     * 输出：8
     * @param args
     */
    public static void main(String[] args) {
        MinCount minCount = new MinCount();
        int[] coins = new int[]{4, 2, 1};
        System.out.println(minCount.minCount(coins));

    }

    /**
     * 模拟
     * @param coins
     * @return int
     */
    public int minCount(int[] coins) {
        int ans = 0;
        for (int coin : coins) {
            ans += (coin / 2 + coin % 2);
        }
        return ans;
    }

    /**
     * 贪心
     * @param coins
     * @return int
     */
    public int minCount2(int[] coins) {
        int ans = 0;
        for (int coin : coins) {
            ans += (coin + 1) / 2;
        }
        return ans;
    }

}
